#include <iostream>
#include <SECore/EventLoop.h>
#include <variant>
#include <optional>
#include <iostream>
#include <SECore/Util.h>
#include <SECore/Config.h>
#include <SECore/Reflect.h>
#include <SECore/Manager.h>
#include <glm/glm.hpp>
#define GLM_ENABLE_EXPERIMENTAL
#include <glm/gtx/string_cast.hpp>
#include <glm/gtc/random.hpp>
#include <SECore/ResourcePayload.h>
#include <Eigen/Dense>
#include <Eigen/Sparse>
#include <igl/cotmatrix.h>
#include <SEngine/Render/Entity/Loader/ModelLoader.h>
#include <SECore/Descriptor.h>
#include <limits>

#include <SEngine/Render/Entity/SDF.h>

using namespace SEngine;

int main() {
    ModelLoader loader;
    loader.Load("C:/Users/daixiangyu6/Desktop/AA/Assets/bunny.stl");
    // loader.Load("./Engine/Model/Cube.fbx");
    loader.ExportSDF();
    // SphereSDF sdf;
    // // sdf.Translate(glm::vec3{1.0f});
    // std::cout << sdf.Distance(glm::vec3{1.0f}) << std::endl;
    // std::cout << glm::to_string(sdf.GetBounds().min) << glm::to_string(sdf.GetBounds().max) << std::endl;
    return 0;
}


